Databases play an increasingly important role in modern life and business. Businesses have come to use databases in any number of different contexts. Human resource departments use databases to store data describing employees, including, compensation information, address information, etc. Sales and marketing departments use customer relationship management (CRM) databases to store data describing customers including, for example, purchases, product preferences, etc. Information technology (IT) departments use databases for many purposes including, for example, storing data describing computer devices, software applications, etc. Consumers too are becoming increasingly dependent on databases. For example, a typical computer device user may use a media application that maintains a database of available media files, a calendar or e-mail application that maintains a database of personal and/or business contacts, a financial application that maintains a database of financial records, and others.
Many modern users need to access data from across multiple different data sources. There are existing methods for aggregating data across multiple sources. These existing methods, however, can be bulky and inefficient. For example, a federation engine can act as an intermediary between clients and multiple data sources. Clients direct queries to the federation engine, which then separately queries the data sources each implicated data source. The federation engine creates and sends a response to the client queries. Thick clients are also used to supplement data from a database. A thick client is configured to independently communicate with multiple data sources. The received data is then aggregated on the client-side.